package com.luxsoft.siipap.migracion;

import java.util.List;

import org.springframework.jdbc.core.RowMapper;


/**
 * Importador generico que delega el detalle de la importacion
 * a una implementacion de RowMapper inyectada y a una sentencia SQL
 * tambien inyectada
 * 
 * @author Ruben Cancino
 *
 */
public class ImportadorGeneral extends MigrationSupport{
	
	private String sql;
	private RowMapper mapper;
		
	public void execute(Object...objects )throws RuntimeException{
		List rows=getSourceJdbcTemplate().query(getSql(), getMapper());
		logger.info("Registros a importar: "+rows.size());
		for(Object row:rows){
			try {
				//logger.info("Salvando: "+row);
				saveBean(row);
			} catch (Exception e) {
				logger.error("Error al salvar row:"+row+" "+e.getMessage());
			}			
		}
	}
	
	/**
	 * Template method para personalizar la forma en que se persitan los beans
	 * obtenidos de la importacion de datos 
	 * 
	 * @param bean
	 */
	public void saveBean(Object bean){
		universalDao.save(bean);
	}
	
	public String getSql() {		
		return sql;
	}
	public void setSql(String sql) {
		this.sql = sql;
	}	
	
	public RowMapper getMapper() {
		return mapper;
	}
	public void setMapper(RowMapper mapper) {
		this.mapper = mapper;
	}

	

}
